<?php
/**
 * Ping-Klasse: Waehlt eine Seite an und fuehrt einen Ping mit Zeitmessung durch
 *
 * @author		Joachim Ruf
 * @copyright	Copyright (c) 2003-2013 Loresoft Software (http://www.loresoft.de)
 * @license		http://yapary.loresoft.de/lizenzbedingungen     New BSD License
 * @TODO
 * */


Class Yapary_WWW_Ping
{


    function __construct () {

    }

    /**
     * Fuehrt eine Zeitmessung durch
     * @param string $host	: Host {www.website.de}
     * @param string $port	: Port, ueber welchen die Verbindung erfolgen soll {80}
     * @param int $timeout	: Zeitspanne bis zur Unterbrechung
     * @return float|NULL
     * */
    public function getTimeHost ($host, $port, $timeout = 10) {
        $errno  = NULL;
        $errstr = NULL;

        // Host anwaehlen und Zeitmessung durchfuehren
		$timeStart = microtime();
		if (!($fs = @fsockopen($host, $port, $errno, $errstr, $timeout))) {
            return NULL;
		}
		$timeEnd = microtime();

		// Zeitberechnung
		list($msec, $sec) = explode(' ', $timeStart);
		$timeStart = (float)$msec + (float)$sec;
		list($msec, $sec) = explode(' ', $timeEnd);
		$timeEnd = (float)$msec + (float)$sec;

		@fclose($fs);

		return ($timeEnd - $timeStart) * 1000;
    }

    /**
     * Fuehrt eine Zeitmessung durch
     * @param string $host	: Host {http://www.website.de}
     * @param string $file	: Datei, welche angewaehlt werden soll {/grfx/image.png}
     * @return float|NULL
     * */
    public function getTimeFile ($host, $file) {
        $errno  = NULL;
        $errstr = NULL;

        // Host anwaehlen und Zeitmessung durchfuehren
		$timeStart = microtime();
		if (!($fs = @file($host.$file))) {
            return NULL;
		}
		$timeEnd = microtime();

		// Zeitberechnung
		list($msec, $sec) = explode(' ', $timeStart);
		$timeStart = (float)$msec + (float)$sec;
		list($msec, $sec) = explode(' ', $timeEnd);
		$timeEnd = (float)$msec + (float)$sec;

		@fclose($fs);

		return ($timeEnd - $timeStart) * 1000;
    }


}


?>